#!/bin/bash

# Travail et idée originale de "Jotenakis"

# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.


#------------------------------------------------------------------------------#
# Fonction de log 				                               #
#------------------------------------------------------------------------------#
log()  {
	if [ "1" -gt "$#" ]; then
		return 0;
	fi
	level_s="\$$1"
	level=$(eval "echo $level_s")
	if [ "$DEBUG_MODE" -gt "$level" ]; then
		echo "`date +%d-%m-%Y-%l:%M:%S` $@"	
	fi
}
#------------------------------------------------------------------------------#
# Fonction d'aide 				                               #
#------------------------------------------------------------------------------#
afficheLecteurAide() {
	echo "Usage: $SCRIPT_NAME [nom de la radio|numéro_flux]";
      	echo "Ce script permet d'écouter des radios en ligne en ne vous servant que de votre console.";
      	echo "MPlayer sera exécuté en tâche de fond.";
      	echo "La dernière version est disponible depuis le site $SCRIPT_PAGEWEB";
      	echo "";
      	echo "$SCRIPT_NAME num_radio 		: lecture de la radio 'num_radio' dans le fichier";
      	echo "$SCRIPT_NAME chaine    		: lecture de la premiere radio dont le nom contient 'chaine'"
      	echo "$SCRIPT_NAME -L|--list		: affiche la liste des radios disponibles";
 	echo "$SCRIPT_NAME -l|--lecture num_radio 	: lecture de la radio 'num_radio' dans le fichier";
	echo "$SCRIPT_NAME -l|--lecture chaine    	: lecture de la premiere radio dont le nom contient 'chaine'"
	echo "$SCRIPT_NAME -s|--stop		    	: arret de la radio en cours de lecture."
	echo "$SCRIPT_NAME -c|--courant	    	: informations sur la radio en cours de lecture."
	echo "$SCRIPT_NAME -h|--help 		    	: affichage de cette aide"
     	echo "$SCRIPT_NAME -V|--verbose 	    	: affichage des logs"
     	echo "$SCRIPT_NAME -f|--fichier nom_fichier  	: chargement de la liste de radio du fichier 'nom_fichier'";
}

#------------------------------------------------------------------------------#
# Fonction de version 				                               #
#------------------------------------------------------------------------------#
afficheVersion() {
      echo "$SCRIPT_NAME version $SCRIPT_VERSION :";
      echo "$SCRIPT_HISTORY";
      echo "Tapez $SCRIPT_NAME --help pour obtenir l'aide complète.";
      echo "";
      exit 1;
}

lancerModeInteractif() {
	exit 0;
}


#------------------------------------------------------------------------------#
# Fonction de la ligne de commande		                               #
#------------------------------------------------------------------------------#
LectureRadio () {
# cette fonction lance la lecture de la radio sélectionnée ou passée en argument
    REC_URL=$URL # on sauve l'URL des fois que l'utilisateur veuille l'enregistrer
    log INFO "Connexion à la radio : $RADIO";
    $MPLAYER $URL 1>/dev/null 2>/dev/null &
   # export RADIO URL
    sleep 2s
    TueLectureRadio;
    sleep 1s
    InitLectureRadio;
}

TueLectureRadio() {
    if [ -f "$PID_FILE" ]
    then
	kill -9 `cut -d';' -f1 $PID_FILE` 2>&1 1>/dev/null
    fi
    rm -f $PID_FILE
}

InitLectureRadio(){
    if [ -f "$PID_FILE" ]
    then
        #echo "Existing mplayer instance ? ?"
        rm -f $PID_FILE
    fi
    #echo `pidof mplayer` > $PID_FILE
    echo "$!;$RADIO;$URL" > $PID_FILE
}

lanceRadio() {
	log DEBUG "Parameter : $@"
	nodigits="$(echo $1 | sed 's/[[:digit:]]//g')"
          
        if [ -n $FILE_CSV ] # la variable $FILE_CSV n'est pas nulle et on a bien reçu un numéro de ligne
        then
		if [ -z "$nodigits" ] 
            	then
                    # on récupère la ligne correspondant à la station demandée
                    line=$(sed -n ${1}p $FILE_CSV)
                else
		    line=$(grep -m 1 -i $1 $FILE_CSV)
		fi
		
		if [ -n "$line" ]
                then
                        # on a un choix valide, on mémorise l'adresse (partie située après le point-virgule)
                        URL=$( echo $line | cut -d ";" -f2 );
                        # on récupère le nom de la radio
                        RADIO=$( echo $line | cut -d ";" -f1 );
                else
                        # le choix est hors limites !
                        log WARN "Choix invalide.";
                fi
	fi
	log DEBUG "RADIO : $RADIO"
	log DEBUG "URL : $URL"
	if [ -n "$URL" ]; then
        	LectureRadio; # on écoute la radio choisie ou passée en argument
    	fi

	exit 0
}

stopRadio() {
    TueLectureRadio;
    exit 0
}
listRadio() {
    cat -n $FILE_CSV | cut -d ";" -f1;
    exit 0
}
